//-------------------------------------------------------------------
// 头文件
//-------------------------------------------------------------------

#include "ui/vars.h"
#include "my_vars.h"

//-------------------------------------------------------------------
// 设置ui变量：top_bar_date_string
//-------------------------------------------------------------------

char top_bar_date_string[100] = {0};

const char *get_var_top_bar_date_string()
{
    return top_bar_date_string;
}

void set_var_top_bar_date_string(const char *value)
{
    strncpy(top_bar_date_string, value, sizeof(top_bar_date_string) / sizeof(char));
    top_bar_date_string[sizeof(top_bar_date_string) / sizeof(char) - 1] = 0;
}

//-------------------------------------------------------------------
// 设置ui变量：top_bar_time_string
//-------------------------------------------------------------------

char top_bar_time_string[100] = {0};

const char *get_var_top_bar_time_string()
{
    return top_bar_time_string;
}

void set_var_top_bar_time_string(const char *value)
{
    strncpy(top_bar_time_string, value, sizeof(top_bar_time_string) / sizeof(char));
    top_bar_time_string[sizeof(top_bar_time_string) / sizeof(char) - 1] = 0;
}

//-------------------------------------------------------------------
// 设置ui变量：hide_get_ticket_key_board
//-------------------------------------------------------------------
bool hide_get_ticket_key_board = true;

bool get_var_hide_get_ticket_key_board()
{
    return hide_get_ticket_key_board;
}

void set_var_hide_get_ticket_key_board(bool value)
{
    hide_get_ticket_key_board = value;
}

//-------------------------------------------------------------------
// 设置ui变量：hide_member_center_key_board
//-------------------------------------------------------------------

bool hide_member_center_key_board = true;

bool get_var_hide_member_center_key_board()
{
    return hide_member_center_key_board;
}

void set_var_hide_member_center_key_board(bool value)
{
    hide_member_center_key_board = value;
}

//-------------------------------------------------------------------
// 设置ui变量：hide_pay_screen_key_board
//-------------------------------------------------------------------

bool hide_pay_screen_key_board;

bool get_var_hide_pay_screen_key_board()
{
    return hide_pay_screen_key_board;
}

void set_var_hide_pay_screen_key_board(bool value)
{
    hide_pay_screen_key_board = value;
}

//-------------------------------------------------------------------
// 私有函数
//-------------------------------------------------------------------

/**
 * @brief  更新标题栏【日期】【时间】
 * @param  lv_timer_t * timer
 * @return 无
 */
void update_date_time_cb(lv_timer_t *timer)
{
    time_t now;
    struct tm tm;

    // 获取当前本地时间
    now = time(NULL);
    localtime_r(&now, &tm);

    char time_str[30]; // 存放格式化后的时间字符串，HH:MM:SS
    char date_str[30]; // 存放格式化后的日期字符串，YYYY年MM月DD日

    // 将时间格式化为字符串，精确到秒
    snprintf(time_str, sizeof(time_str), "%02d:%02d:%02d", tm.tm_hour, tm.tm_min, tm.tm_sec);
    // 将日期格式化为字符串，精确到日
    snprintf(date_str, sizeof(date_str), "%04d年%02d月%02d日", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday);

    set_var_top_bar_time_string(time_str); // 更新时间标签的文本
    set_var_top_bar_date_string(date_str); // 更新日期标签的文本

    tick_screen(currentScreen);

    // static time_t start_time = 0; // 初始时长为0
    // if (start_time == 0)
    // {
    //     start_time = now;
    // }
    // int total_minute = (now - start_time) / 60; // 计算累计时长（分钟）
    // lv_label_set_text_fmt(label_duration, "时长: %d min", total_minute); // 更新时长标签的文本
}

//-------------------------------------------------------------------
// 函数实现
//-------------------------------------------------------------------
void ui_vars_init()
{
    // 创建一个定时器，每秒更新vars变量（日期、时间）
    lv_timer_create(update_date_time_cb, 1000, NULL);

    // 先隐藏键盘
    set_var_hide_get_ticket_key_board(true);
    set_var_hide_member_center_key_board(true);
    set_var_hide_pay_screen_key_board(true);
}